# Q. What is this file?
# A. This file contains options which allow you to configure your multiworld experience while allowing
#    others to play how they want as well.
#
# Q. How do I use it?
# A. The options in this file are weighted. This means the higher number you assign to a value, the
#    more chances you have for that option to be chosen. For example, an option like this:
#
#    map_shuffle:
#      on: 5
#      off: 15
#
#    Means you have 5 chances for map shuffle to occur, and 15 chances for map shuffle to be turned
#    off.
#
# Q. I've never seen a file like this before. What characters am I allowed to use?
# A. This is a .yaml file. You are allowed to use most characters.
#    To test if your yaml is valid or not, you can use this website:
#        http://www.yamllint.com/
#    You can also verify that your Archipelago options are valid at this site:
#        https://archipelago.gg/check

# Your name in-game, limited to 16 characters.
#     {player} will be replaced with the player's slot number.
#     {PLAYER} will be replaced with the player's slot number, if that slot number is greater than 1.
#     {number} will be replaced with the counter value of the name.
#     {NUMBER} will be replaced with the counter value of the name, if the counter value is greater than 1.
name: Player{number}

# Used to describe your yaml. Useful if you have multiple files.
description: Default Etrian Odyssey Template

game: Etrian Odyssey
requires:
  version: 0.6.7 # Version of Archipelago required for this yaml to work as expected.
  game:
    Etrian Odyssey: 0.4.1 # Version of the world required for this yaml to work as expected.

Etrian Odyssey:
  ################
  # Game Options #
  ################
  progression_balancing:
    # A system that can move progression earlier, to try and prevent the player from getting stuck and bored early.
    # 
    # A lower setting means more getting stuck. A higher setting means less getting stuck.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 99
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-99: 0 # random value between 0 and 99
    disabled: 0 # equivalent to 0
    normal: 50 # equivalent to 50
    extreme: 0 # equivalent to 99

  accessibility:
    # Set rules for reachability of your items/locations.
    # 
    # **Full:** ensure everything can be reached and acquired.
    # 
    # **Minimal:** ensure what is needed to reach your goal can be acquired.
    full: 50
    minimal: 0

  goal:
    # Controls what the goal of the game is for the randomizer.
    # 
    # - **Defeat Fenrir:** Defeat the boss of the 1st Stratum, Fenrir (B5F) (Lvl 30).
    # - **Defeat Cernunos:** Defeat the boss of the 2nd Stratum, Cernunos (B10F) (Lvl 40).
    # - **Defeat Cotrangl:** Defeat the boss of the 3rd Stratum, Cotrangl (B15F) (Lvl 50).
    # - **Annihilate the Forest Folk:** Defeat the boss of the 4th Stratum, Iwaopeln and all the FOEs on B20F (Lvl 60).
    # - **Defeat Etreant:** Defeat the boss of the 5th Stratum (and the normal end of the game), Etreant (B25F) (Lvl 70).
    # - **Defeat Primevil:** Defeat the boss of the 6th Stratum (postgame), Primevil (B30F) (Lvl 70). WARNING: NOT RECOMMENDED
    #   UNLESS YOU KNOW WHAT YOU ARE GETTING INTO
    # - **Fully Complete Codex and Compendium:** Don't. Why is this even an option. (B30F) (Lvl 70). WARNING: NOT RECOMMENDED
    #   UNLESS YOU KNOW WHAT YOU ARE GETTING INTO. PLEASE RECONSIDER. Note: To goal, you need to collect the Town Crown at Radha Hall.
    defeat_fenrir: 0
    defeat_cernunos: 50
    defeat_cotrangl: 0
    annihilate_the_forest_folk: 0
    defeat_etreant: 0
    defeat_primevil: 0
    fully_complete_codex_and_compendium: 0

  experience_modifier:
    # Experience modifier (as percentage). Recommended at least 500(%).
    # Note: Etrian Odyssey 1 uniquely has the level difference factored in damage calculation, making level extremely important.
    # Note: This doesn't affect logic.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 50
    # Maximum value is 1000
    500: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-50-1000: 0 # random value between 50 and 1000

  battle_logic_mode:
    # Controls how battle logic function.
    # 
    # - **Simplified:** (Recommended) Criteria based logic for each individual enemies.
    #   Also does everything "Level Only" does.
    # - **Level Only:** Battle Logic only consider the level cap of the player. Not recommended with Skill Shuffling.
    # - **No Logic:** Absolutely no logic, everything is considered defeatable from the go.
    #   Recommended only if only level cap, class shuffling and skill shuffling are disabled.
    simplified: 50
    level_only: 0
    no_logic: 0

  battle_logic_difficulty:
    # Placeholder for future settings.
    normal: 50

  sustain_logic_enabled:
    # When enabled, ensure the player has strong enough renewable healing items or healing skills to reach each region.
    # Note: This has a noticeable cost on generation time and should be turned off if Skills and Class are not shuffled.
    'false': 0
    'true': 50

  level_cap_mode:
    # Option that controls how level cap are handled. By default, in Etrian Odyssey 1, the player level cap at level 70
    # and nothing increase it. This randomizer restrict this level cap and add Items that increase the starting cap for
    # every player characters. This does not allow to go above level 70.
    # 
    # Note: The starting level cap is defined by the Initial Level Cap option.
    # Note: The item pool is balanced based on the goal in a way to have the final level cap to be within reason for it,
    #       instead of always having enough items to reach level 70. See the goals to know what are the targeted level cap.
    # 
    # - **None:** Level cap is vanilla (70). Expect a lot of potential level grinding to be required.
    # - **Fixed Increase:** (Recommended) Every level cap items will have the same level value, determined by the options.
    # - **Complete Shuffle:** Add level cap items with random values.
    none: 0
    fixed_increase: 50
    complete_shuffle: 0

  initial_level_cap:
    # Define the starting level cap of the player. Only used if "Level Cap Mode" is not "None".
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 70
    10: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-70: 0 # random value between 1 and 70

  level_cap_increase_value:
    # Define by how many level each Level Cap items increase the player level cap.
    # Only used if "Level Cap Mode" is "Fixed Increase".
    '1': 0
    '2': 0
    '3': 0
    '4': 50
    '5': 0
    '10': 0
    '15': 0

  extra_progressive_level_cap_items:
    # Add extra Level Cap items to the item pool (instead of the minimum).
    # Works with both "Fixed Increase" and "Complete Shuffle".
    # 
    # The purpose of this option is to not require the player to need every single level cap items from the pool.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 30
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-30: 0 # random value between 0 and 30

  floor_limit_mode:
    # Option that controls how floor limit are handled. By default, in Etrian Odyssey 1, there are no concept of Floor
    # Limit. The player can go to any floor available to their current progression (up to floor B30F). This randomizer
    # restrict this by adding Items that increase the maximum floor the player go enter.
    # 
    # Note: The starting floor limit is defined by the Initial Floor Limit option.
    # Note: Pitfalls allow to bypass this limit, but are never considered in logic. This is intentional behavior.
    # Note: The item pool is balanced based on the goal in a way to have the final floor limit stop at it,
    #       instead of always having enough items to reach Floor 30. See the goals to know what are the floor limit.
    # 
    # - **None:** Floor Limit is vanilla (30).
    # - **Fixed Increase:** (Recommended) Every floor limit items will have the same floor value, determined by the options.
    # - **Complete Shuffle:** Add floor limit items with random values.
    none: 0
    fixed_increase: 50
    complete_shuffle: 0

  initial_floor_limit:
    # Define the starting floor limit. Only used if "Floor Limit Mode" is not "None".
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 30
    5: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-30: 0 # random value between 1 and 30

  floor_limit_increase_value:
    # Define by how many floor each Floor Limit items increase the floor limit.
    # Only used if "Floor Limit Mode" is "Fixed Increase".
    '1': 50
    '2': 0
    '3': 0
    '4': 0
    '5': 0
    '10': 0

  extra_progressive_floor_limit:
    # Add extra Floor Limit items to the item pool (instead of the minimum).
    # Works with both "Fixed Increase" and "Complete Shuffle".
    # 
    # The purpose of this option is to not require the player to need every single Floor Limit items from the pool.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 10
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-10: 0 # random value between 0 and 10

  class_sanity_mode:
    # Controls how available character class are shuffled.
    # 
    # - **Vanilla:** Start with all the vanilla starting class, shuffling only Ronin and Hexer.
    #                Note that theses are shuffled in the item pool and are not unlocked by their normal method.
    # - **Start With All:** No class are shuffled, the player starts with all of them available.
    # - **Shuffle Availability:** Start with the amount of class defined by "Starting Class Count".
    #                             Every other class are shuffled in the item pool.
    vanilla: 0
    start_with_all: 0
    shuffle_availability: 50

  starting_class_count:
    # Define how many class are available at the start. Only used if "Class Sanity Mode" is "Shuffle Availability".
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 9
    4: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-9: 0 # random value between 1 and 9

  skill_sanity_mode:
    # Controls how available class Skills are shuffled.
    # 
    # Note: This shuffles the ability to learn skills. It doesn't change what skill a class have.
    # 
    # - **None:** Vanilla behavior. All class skills are available as normal.
    # - **Shuffle Individually:** Every Skill are their own individual item in the pool.
    # - **Shuffle Group:** Skill are grouped in predetermined arbitrary categories, and each group are one item in the pool.
    none: 50
    shuffle_individually: 0
    shuffle_group: 0

  shuffle_generic_stats_increase_skills:
    # Determine if the Generic Stats increase skills are shuffled.
    # 
    # These are:
    # - HP Up
    # - TP Up
    # - Atk Up
    # - Def Up
    # - Agi Up
    # 
    # If enabled, these skills are shuffled according to the "Skill Sanity Mode" option.
    # If disabled, the player start with all of them available.
    'false': 0
    'true': 50

  shuffle_mastery_skills:
    # Determine if the Mastery Skills are shuffled.
    # 
    # These are:
    # - Landsknecht Axes
    # - Landsknecht Swords
    # - Survivalist Bows
    # - Protector Shields
    # - Dark Hunter Whips
    # - Dark Hunter Swords
    # - Medic Healer
    # - Alchemist Fire Up
    # - Alchemist Ice Up
    # - Alchemist Volt Up
    # - Alchemist Toxins
    # - Troubadour Songs
    # - Ronin Katanas
    # - Hexer Curses
    # 
    # If enabled, these skills are shuffled according to the "Skill Sanity Mode" option.
    # If disabled, the player start with all of them available.
    # Note: This is not particularly useful for Skill Sanity Mode "Group".
    'false': 0
    'true': 50

  shuffle_gathering_skills:
    # Determine if the Gathering skills are shuffled.
    # 
    # These are:
    # - Take
    # - Mine
    # - Chop
    # 
    # If enabled, these skills are shuffled according to the "Skill Sanity Mode" option.
    # If disabled, the player start with all of them available.
    'false': 50
    'true': 0

  starting_skill_item_count:
    # Define how many skill items each character class start with unlocked.
    # This doesn't count skills that are not shuffled because of the options.
    # Skill Item in this context mean that with "Shuffle Group", each Skill Group count for one, instead of each skill
    # counting individually.
    # 
    # Note: Starting Skills are not guaranteed to be usable if required skills are not also unlocked.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 21
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-21: 0 # random value between 0 and 21

  skill_requirement_shuffle:
    # Randomize Skill Requirements. Logic is affected by every option.
    # 
    # - **Vanilla:** Vanilla Requirements. Nothing is changed.
    # - **Remove:** Removes the skills requirement from the game. This mean that every skill are learnable by themselves
    # from level 1 (if unlocked).
    # - **Level Shuffle:** The required skills are kept the same, but the level requirement are randomized.
    # - **Non-Root Shuffle with Mastery retention:** All non-base skills requirements are randomized, retaining the mastery trees.
    # - **Non-Root Shuffle:** All non-base skills requirements are randomized without retaining the mastery trees.
    # - **Full Shuffle with Mastery retention:** All skills requirements are randomized, retaining the mastery trees.
    # - **Full Shuffle:** All skills requirements are randomized without retaining the mastery trees.**
    # - **Chaos:** All skills requirements are randomized. Mastery are not prioritized as primary requirement. No chain dependency limit.
    # WARNING: This can make very messed up seeds that are borderline impossibles, use at your own risk.**
    # 
    # Note: Root Skills refer to any skills that can has no vanilla requirements.
    # Note: Full Shuffle and Chaos Shuffle makes shuffle_generic_stats_increase_skills, shuffle_mastery_skills and shuffle_gathering_skills
    # less meaningful, but are still supported.
    # Note: Mastery retention mean that skills that are part of a mastery tree will remain with that mastery tree. The mastery
    # trees in this context are:
    # - Landsknecht Axes
    # - Landsknecht Swords
    # - Survivalist Bows
    # - Survivalist AGI Up
    # - Protector Shields
    # - Protector DEF Up
    # - Dark Hunter Whips
    # - Dark Hunter Swords
    # - Medic Healer
    # - Alchemist Fire Up
    # - Alchemist Ice Up
    # - Alchemist Volt Up
    # - Alchemist Toxins
    # - Troubadour Songs
    # - Ronin Katanas
    # - Hexer Curses
    # 
    # Note: Most Ronin skills still need their respective Stance skills to be usable. Logic accounts for this.
    # Note: Hexer Paralyze, Betrayal and Suicide skills still need Evil Eye to be usable. Logic accounts for this.
    # About Randomization: The level requirements randomization is distributed to be similar to vanilla, so most skills
    # requirement are expected to be between lv1 and lv5.
    # 
    # Primary requirements prioritize skills without requirements. Secondary requirements are randomly determined based on a
    # distribution similar to vanilla per class (in quantity)
    vanilla: 50
    remove: 0
    level_shuffle: 0
    non_root_shuffle_with_mastery_retention: 0
    non_root_shuffle: 0
    full_shuffle_with_mastery_retention: 0
    full_shuffle: 0
    chaos: 0

  codex_sanity:
    # Shuffles Monster Codex entries as Locations.
    # 
    # Monster Codex entries are unlocked by defeating a monster for the first time.
    'false': 0
    'true': 50

  codex_sanity_include_quest_monsters:
    # Shuffles the Quest only Monster Codex entries as Locations.
    # 
    # Note: Only used if "codex_sanity" is enabled.
    # Quest only monsters are:
    # - Fireater
    # - Toxinfly
    # - Omnivore
    # - Nightoad
    # - Hextoad
    # - Steelweb
    # - Golem
    # - Alraune
    # - Wyrm
    # - Drake
    # - Dragon
    'false': 0
    'true': 50

  compendium_sanity:
    # Shuffles Item Compendium entries as Locations. Includes both Gathering items and Monster Drops.
    # 
    # Item Compendium entries are unlocked by obtaining a material for the first time.
    'false': 50
    'true': 0

  compendium_sanity_include_conditional_drops:
    # Shuffles Item Compendium entries only available by Conditional Monster Drops as locations.
    'false': 0
    'true': 50

  quest_sanity:
    # Shuffles Quest completions as Locations. See the Quest Document for more information.
    'false': 50
    'true': 0

  quest_completion_reward_hint:
    # When enabled, replace part of the quest description in-game with the name of the reward for clearing the quest.
    'false': 0
    'true': 50

  shop_unlock_sanity:
    # Shuffles Shop Item Unlocks as Locations. Does not change the actual shop items.
    'false': 50
    'true': 0

  shuffle_radha_note:
    # When enabled, add the Radha Note to the item pool and remove it from the first mission rewards.
    # WARNING: Radha Note is necessary to unlock Warp Wires in the shop, enabling this can make a seed incredibly harder.
    'false': 50
    'true': 0

  minimize_quest_material_grind:
    # When enabled, reduce the item requirement for completing the following quests to 1 per material:
    # - The leathersmith's favor
    # - Chef's request I
    # - Fashionista I
    # - Prayer to the stars
    # - Chef's request II
    # - Under construction
    # - A sister's parting gift
    # - The Crystal Maiden
    # - Emblem of love
    # - The gold enthusiast
    # 
    # This option is fully independent of Quest Sanity, and it doesn't affect its logic.
    'false': 0
    'true': 50

  shop_unlock_material_cost_divider:
    # Reduce the amount of material required to be sold to unlock new shop items.
    # 
    # - **Vanilla:** Nothing is changed.
    # - **Half:** The amount of material required is halved (rounded up).
    # - **Quarter:** The amount of material required is divided by 4 (rounded up).
    # - **One for All:** The amount of material required is set to 1 for every item. Minimal grind.
    # 
    # Note: This doesn't affect logic.
    vanilla: 50
    half: 0
    quarter: 0
    one_for_all: 0

  material_sell_value_multiplier:
    # Multiply the amount of money acquired by selling material. "1" means vanilla values.
    # 
    # Note: This doesn't affect logic.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 100
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-100: 0 # random value between 1 and 100

  ###########################
  # Item & Location Options #
  ###########################
  local_items:
    # Forces these items to be in their native world.
    []

  non_local_items:
    # Forces these items to be outside their native world.
    []

  start_inventory:
    # Start with the specified amount of these items. Example: "Bomb: 1"
    {}

  start_hints:
    # Start with these item's locations prefilled into the ``!hint`` command.
    []

  start_location_hints:
    # Start with these locations and their item prefilled into the ``!hint`` command.
    []

  exclude_locations:
    # Prevent these locations from having an important item.
    []

  priority_locations:
    # Prevent these locations from having an unimportant item.
    []

  item_links:
    # Share part of your item pool with other players.
    []

  plando_items:
    # Generic items plando.
    []
